package com.greenold.service.mapper;

import java.util.List;

import com.greenold.service.domain.CareItem;
import com.greenold.service.domain.CarePlan;
import com.greenold.service.domain.CarePlanItem;
import org.apache.ibatis.annotations.Param;

/**
 * 护理计划Mapper接口
 *
 * @author YueYang
 * @date 2025-10-13
 */
public interface CarePlanMapper {

    /**
     * 查询护理计划列表
     *
     * @param carePlan 护理计划
     * @return 护理计划集合
     */
    public List<CarePlan> selectCarePlanList(CarePlan carePlan);


    /**
     * 查询护理计划
     *
     * @param id 护理计划主键
     * @return 护理计划
     */
    public CarePlan selectCarePlanById(String id);

    /**
     * 新增护理计划
     *
     * @param carePlan 护理计划
     * @return 结果
     */
    public int insertCarePlan(CarePlan carePlan);


    /**
     * 批量新增护理计划项目关联关系
     *
     * @param carePlanItemList 护理计划项目关联关系列表
     * @return 结果
     */
    int batchCarePlanItem(@Param("carePlanItemList") List<CarePlanItem> carePlanItemList);

    /**
     * 通过护理计划主键删除护理计划项目关联关系
     *
     * @param id 护理计划ID
     * @return 结果
     */
    int deleteCarePlanItem(String id);

    /**
     * 修改护理计划
     *
     * @param carePlan 护理计划
     * @return 结果
     */
    public int updateCarePlan(CarePlan carePlan);

    /**
     * 删除护理计划
     *
     * @param id 护理计划主键
     * @return 结果
     */
    public int deleteCarePlanById(String id);


    /**
     * 修改护理计划状态
     *
     * @param id 根据id修改护理计划状态
     * @return 返回影响行数
     */
    int changeStatus(@Param("id") Integer id, @Param("status") String status);

    /**
     * 查询与护理计划关联的所有护理等级id
     *
     * @return 所有护理等级id列表
     */
    List<Long> getLevelIds();
}
